// 数据库操作

// 初始化数据库
const tcb = require("@cloudbase/node-sdk")
const {envInfo} = require('../utils/env')
const dbApp = tcb.init(envInfo)
const db = dbApp.database()

class DbModel{
    // 新增操作
    async addDocuments(collectionName,documentObj){
        // 获取对collectionName集合的引用
        const collection = db.collection(collectionName)
        // documentObj：对象或对象数组（新增一个或多个文档）
        const addResult = await collection.add(documentObj)
        // 返回值：id（文档ID）、requestId（数据库操作请求Id）
        return addResult
    }
    // 单文档删除操作
    async delDocument(collectionName,documentId){
        // 获取对collectionName集合的引用
        const collection = db.collection(collectionName)
        // 根据ID删除文档
        const deleteResult = await collection.doc(documentId).remove()
        // 返回值：deleted（已删除文档的数量）、requestId（数据库操作请求Id）
        return deleteResult
    }
    // 单文档修改操作
    async updateDocument(collectionName,documentId,updateObj){
        // 获取对collectionName集合的引用
        const collection = db.collection(collectionName)
        // 根据文档ID，更新相应字段。
        const updateResult = await collection.doc(documentId).update(updateObj)
        // 返回值：updated(已修改文档的数量)、requestId（数据库操作请求Id）
        return updateResult
    }
    // 查询操作
    async queryDocuments(collectionName,whereObj,queryInfo,fieldObj){
        // 获取对collectionName集合的引用
        const collection = db.collection(collectionName)
        // 查询信息
        const { limitNumber,skipNumber,field,orderType } = queryInfo
        // limitNumber查询结果集上限；skipNumber跳过指定序列；whereObj查询参数；
        const queryResult = await collection.where(whereObj).limit(limitNumber).skip(skipNumber).field(fieldObj).orderBy(field,orderType).get()
        // 返回值：data（查询到的文档数组，未查询到为空数组）、requestId（数据库操作请求Id）
        return queryResult
    }
}

// 导出数据库操作Model对象
module.exports = new DbModel()